'use strict';
const { Controller } = require('egg');
const { Op } = require('sequelize');
const serviceName = 'role'
class RouterController extends Controller {
    // 分页
    async index() {
        const { query, service } = this.ctx;
        let { pageNum, pageSize, name = '' } = query;
        let page = Number(pageNum) || 1;
        let size = Number(pageSize) || 10;
        const where = {

        };
        if (name) {
            where.name = { [Op.like]: `%${name}%` }
        }
        if (!isNaN(Number(query.status))) {
            where.status = query.status
        }
        const list = await service[serviceName].getPage(where, page, size);
        this.ctx.success(list);
    }
    // 新增
    async create() {
        const { ctx } = this;
        const data = ctx.request.body;
        await ctx.service[serviceName].create(data);
        ctx.success(data, 200);
    }
    // 修改
    async update() {
        const { ctx } = this;
        const id = ctx.params.id;
        const infos = ctx.request.body;
        if (!id) throw new Error('必须传递ID参数');
        if (Object.keys(infos).length === 0) throw new Error('请传递修改的内容');
        await ctx.service[serviceName].update(id, infos);
        ctx.success(id, 200);
    }
    // 删除
    async destroy() {
        const uid = Number(this.ctx.params.id);
        if (!uid) throw new Error('ID 有误');
        await this.ctx.service[serviceName].deleteById(uid);
        this.ctx.success(uid); // 删除成功返回被删除的用户ID
    }
    // 查看
    async show() {
        const { params, service } = this.ctx;
        const findItem = await service[serviceName].findOne(params.id);
        this.ctx.success(findItem);
    }
    // 所有列表
    async allList() {
        const { service } = this.ctx;
        const list = await service[serviceName].allList();
        this.ctx.success(list);
    }
}

module.exports = RouterController;
